Typically, a network generally refers to a communication system that allows users to access resources on other computers and to exchange data and messages with other users. Particularly, a network allows users to share resources on their own systems and with other network users and to access information on centrally located systems or systems that are located at remote offices. Networks generally also provide connections to the Internet or other networks of other organizations. Further, network connections allow users to operate from their home, their office, or at other locations.
More particularly, a network is a data communications system that links two or more devices (e.g. computers, peripheral devices, etc.). Generally, a network consists of a cable that attaches to network interface cards (NICs) of devices to allow communication between the devices. Further, typically, users interact with network-enabled software applications to make a network request such as to get a file from another computer or to print a document on a network printer. The application communicates with network software and the network software interacts with the network hardware. The network hardware is responsible for transmitting information to other devices attached to network.
A local area network (LAN) is a network that is located in a relatively small area such as a department, a building, or a home. Technically, a LAN consists of a shared medium to which devices attach to communicate with one another using broadcast methods. With broadcasting, any device on the LAN can transmit a message that all the other devices on the LAN can listen to.
Over the last decade or so, for many businesses, it has become a necessity for employees to share data over an enterprise network featuring one or more LANs. To improve efficiency, enhancements have been added to LANs such as remote wireless access. This enhancement provides an important extension in forming a wireless local area network (WLAN).
Typically, wireless networks support communications between a station or server and wireless clients, and among the various wireless clients themselves, utilizing access points (APs). In general, each AP operates as a relay station by supporting communications between the wireless clients themselves and between the wireless clients and the server. Further, data transmitters within a wireless network, such as data transmitters operating using an Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless protocol, can transmit data at different rates to different clients. Oftentimes, the data transmitters (e.g. including an antenna), are included as part of an access point.
Further, home networks including wireless home-networks, similar to WLAN's, have become increasingly popular. For example, in wireless home-networks, a home media server streams data, such as video and audio data, to client devices throughout the home. Better Quality of Service (QoS), and better bandwidth, allows the server to stream high fidelity content, such as movies, television, graphics, multi-media, games, web pages, etc., to client devices throughout the house. Hence, it is important to optimize QoS and network bandwidth, which is particularly important for unreliable and lower-bandwidth networks, such as wireless networks. WLAN's and wireless home-networks, as well as other types of wireless networks, will be generally referred to as wireless networks.
Within a network, whether it be a wired network or a wireless network, in order to provide reliable service, it is oftentimes necessary to constrain network resource usage for individual nodes or devices of the network. For example, if node A and node B are using a network for transmission, node A and node B may share the available bandwidth equally and may each be limited to no more than 50% of the bandwidth available on the network, respectively, or node A and node B may share the available bandwidth as 20% and 80%, respectively. Obviously, many other combinations are possible.
However, often, many issues arise as to how bandwidth between competing nodes should be allocated in the network and further as to how to allocate bandwidth when new nodes wish to be admitted into the network. All of these factors can lead to congestion problems in the network. Moreover, these issues become even more complex when network bandwidth changes dynamically, such as in wireless networks.
Network based applications often provide better performance and quality when they utilize more network bandwidth and hence have more throughput. For example, by utilizing more network bandwidth, an audio-visual (A/V) streaming application may send data at a higher MPEG-2 data rate, which provides for higher quality video at the destination.
However, in inherently unreliable networks, such as wireless networks, or other networks in which the bandwidth available to a particular application may change unpredictably (e.g. in wireless RF networks, this unpredictability may be due to shadowing, multi-path, or active RF interference, etc.), high utilization of network bandwidth by applications can lead to network congestion when available network bandwidth suddenly decreases. This may lead to unacceptable performance and/or quality at the destination node.
In addition, in contention-based networks (for example, Ethernet, Distributed Coordination Function (DCF) or Enhanced DCF (EDCF) of the IEEE802.11 Wireless Protocol) each node in the network competes for access in the transmission medium. Due to this, available network bandwidth depends not only on issues such as multi-path and shadowing, but also on the number of nodes using the network and the time-distribution of transmission by these nodes. A large number of nodes can therefore increase contention thereby decreasing useful bandwidth.
Hence, in these types of inherently unreliable wireless networks, it is beneficial to be able to dynamically estimate and predict network bandwidth on different network links accurately and to dynamically and rapidly change the data rate to prevent congestion while maximizing usage of current available network bandwidth. Unfortunately, previous methods of congestion avoidance do not take into account the unique characteristics associated with inherently unreliable networks, such as wireless networks.